<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Think;
use Think\Auth;
class AuthorityController extends Controller {
    /**
     * 权限验证
     * @author 杨智超 562608962@QQ.com
     */
    function _initialize(){
        $auth=new Auth();//new一个Auth类
        if(!$auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,$_SESSION["id"])){//验证权限
            $this->error('没有权限',U("Admin/Index/login"));exit();//没有权限时重定向并提示
        }
    }
    /**
     * 角色管理
     * @author 杨智超 562608962@QQ.com
     * tel:13669982001
     */
    public function role(){
        $admin=M("auth_group");//建立auth_group表的模型admin
        $info=$admin->select();//将表auth_group表查询的结果赋值给info
        $count=$admin->count();//获取auth_group表中数据条数
        foreach ($info as $k=>$v){//遍历info数组结果集
            $where["group_id"]=$v["id"];//加where条件group_id==$info[$i][id]
            $peoples=Null;//清空$peoples
            $peoples=M("auth_group_access")->where($where)->select();//将auth_group_access表符合where条件的结果赋值给$peoples
            $peo=null;
            foreach ($peoples as $ke=>$va){//遍历peoples数组结果集
                $people=M("users")->where("id=".$va["uid"])->find();//将id=$peoples[$i][uid]的users表中的用户赋值给$people
                $peo[$ke]=$people["username"];//将用户名赋值给$peo数组
                $info[$k]["people"]=implode(',',$peo);//将$peo数组拼接成字符串并赋值给$info[$k]["people"]
            }  
        }
        $this->assign("count",$count);//返回$count
        $this->assign("info",$info);//返回$info
        $this->display("role");//定向到role模板
    }
    /**
     * 角色添加
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_role_add(){
        $arule=M("auth_rule");//建立auth_rule表的模型arule
        $rule=$arule->select();//将表auth_group表查询的结果赋值给rule
        if($_POST){//当表单提交post时执行以下语句
            $_POST["rules"]=implode(',',$_POST["rule"]);//将权限数组拼接成字符串并赋值给$_POST["rules"]
            $group=M("auth_group");//建立auth_group表的模型group
            $i=$group->add($_POST);//向auth_group表中添加一条post数据得到返回结果i
            if($i){//当i为真时
                // $data["uid"]=$_SESSION["id"];//将session[id]赋值给$data["uid"]
                // $data["content"]="添加了角色";//描述事件
                // $data["time"]=date("Y-m-d H:i:s");//获取当前时间
                // $data["ip"]=get_client_ip();//获取操作ip地址
                // M("data")->add($data);//添加到日志表
                $this->ajaxreturn("success");
            }else {
                $this->ajaxreturn("false");//重定向到admin_role_add方法并提示不成功
            }
        }
        $this->assign("rule",$rule);//返回$rule值
        $this->display("admin_role_add");//定向到admin_role_add模板
    }
    /**
     * 角色编辑
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_role_edit(){
        $id=$_GET["id"];//获取getid
        $group=M("auth_group");//建立auth_group表的模型group
        $info=$group->where("id=".$id)->find();//将id=获取id的信息查出并赋值给info
        $rules=explode(',',$info[rules]);//将权限分解成数组
        if($_POST){//当表单提交post时执行以下语句
            $_POST["status"]=1;//将状态赋值为1
            $_POST["rules"]=implode(',',$_POST["rule"]);//将权限数组拼接成字符串并赋值给$_POST["rules"]
            $re=$group->where("id=".$id)->save($_POST);//修改id=id的角色信息
            if($re){//当re为真
                // $data["uid"]=$_SESSION["id"];//
                // $data["content"]="修改了角色资料";
                // $data["time"]=date("Y-m-d H:i:s");
                // $data["ip"]=get_client_ip();
                // M("data")->add($data);
                $this->ajaxreturn("success");
            }else {
                $this->ajaxreturn("false");
            }exit;
        }
        $rule=M("auth_rule")->select();
        $this->assign("rules",$rules);
        $this->assign("rule",$rule);
        $this->assign("info",$info);
        $this->display("admin_role_edit");
    }
    /**
     * 角色删除
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_role_del(){
        $id=$_GET["id"];
        $where["id"]=$id;
        $re=M("auth_group")->where($where)->delete();
        if ($re){
            // $data["uid"]=$_SESSION["id"];
            // $data["content"]="删除了角色";
            // $data["time"]=date("Y-m-d H:i:s");
            // $data["ip"]=get_client_ip();
            // M("data")->add($data);
            $this->success("删除成功",U("role"));
        }else {
            $this->error("删除失败",U("role"));
        }exit;
        $this->display("role");
    }
    /**
     * 权限管理
     * @author 杨智超 562608962@QQ.com
     * tel:13669982001
     */
    public function permission(){
        $rule=M("auth_rule");
        if($_POST){
            $where["title"]=array('like',"%".$_POST["title"]."%");
        }
        $info=$rule->where($where)->select();
        $count=$rule->count();
        $this->assign("count",$count);
        $this->assign("info",$info);
        $this->display("permission");
    }
    /**
     * 权限添加
     * @author 杨智超 562608962@QQ.com
     * tel:13669982001
     */
    public function permission_add(){
        $rule=M("auth_rule");
        $father=$rule->select();
        if($_POST){
            $re=$rule->add($_POST);
            if($re){
                // $data["uid"]=$_SESSION["id"];
                // $data["content"]="添加了权限";
                // $data["time"]=date("Y-m-d H:i:s");
                // $data["ip"]=get_client_ip();
                // M("data")->add($data);
                $this->ajaxreturn("success");
            }else {
                $this->ajaxreturn("false");
            }exit;
        }
        $this->assign("father",$father);
        $this->display("permission_add");
    }
    /**
     * 权限编辑
     * @author 杨智超 562608962@QQ.com
     * tel:13669982001
     */
    public function permission_edit(){
        $id=$_GET["id"];
        $rule=M("auth_rule");
        $where["id"]=$id;
        $info=$rule->where($where)->find();
        $father=$rule->select();
        if($_POST){
            if($_POST["menu"]!=1){
                $_POST["menu"]=0;
            }
            $re=$rule->where($where)->save($_POST);
            if($re){
                // $data["uid"]=$_SESSION["id"];
                // $data["content"]="修改了权限";
                // $data["time"]=date("Y-m-d H:i:s");
                // $data["ip"]=get_client_ip();
                // M("data")->add($data);
                $this->ajaxreturn("success");
            }else {
                $this->ajaxreturn("false");
            }exit;
        }
        $this->assign("info",$info);
        $this->assign("father",$father);
        $this->display("permission_edit");
    }
    /**
     * 权限删除
     * @author 杨智超 562608962@QQ.com
     * tel:13669982001
     */
    public function permission_del(){
        $id=$_GET["id"];
        $rule=M("auth_rule");
        $where["id"]=$id;
        $re=$rule->where($where)->delete();
        if ($re){
            // $data["uid"]=$_SESSION["id"];
            // $data["content"]="删除了权限";
            // $data["time"]=date("Y-m-d H:i:s");
            // $data["ip"]=get_client_ip();
            // M("data")->add($data);
            $this->success("删除成功",U("permission"));
        }else {
            $this->error("删除失败",U("permission"));
        }exit;
        $this->display("permission");
    }
    /**
     * 用户管理
     * @author 杨智超 562608962@QQ.com
     * tel:13669982001
     */
    public function admin(){
        $user=M("users");
        if($_POST){
            if($_POST["mintime"]!=NULL && $_POST["maxtime"]!=NULL){
            $where['logintime']  = array('between',$_POST["mintime"].",".$_POST["maxtime"]);
            }
            if($_POST["username"]!=NULL){
            $where['username']  =  array('like',"%".$_POST["username"]."%");
            }
        }else{
            $where=Null;
        }
        $info=$user->where($where)->select();
        $count=$user->where($where)->count();
        $auth=new Auth();
        foreach ($info as $key=>$value){
            $title=$auth->getGroups($info[$key]["id"]);
            $info[$key]["title"]=$title[0]["title"];
        }
        $this->assign("mintime",$_POST["mintime"]);
        $this->assign("maxtime",$_POST["maxtime"]);
        $this->assign("username",$_POST["username"]);
        $this->assign("count",$count);
        $this->assign("info",$info);
        $this->display("admin");
    }
    /**
     * 用户添加
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_add(){
        $admin=M("users");
        $gro=M("auth_group_access");
        $group=M("auth_group")->select();
        if($_POST){
            $res=$admin->where("username='".$_POST["username"]."'")->find();
            if($res){
                $this->error("用户已存在",U("admin_add"));
            }else{
                if($_POST["password"]==$_POST["password2"]){
                    $_POST["password"]=md5($_POST["password"]);
                    $_POST["ip"]=get_client_ip();
                    $ad=$admin->add($_POST);
                    $rul["uid"]=$ad;
                    $rul["group_id"]=$_POST["group"];
                    $gro->add($rul);
                    if($ad){
                        // $data["uid"]=$_SESSION["id"];
                        // $data["content"]="添加了用户";
                        // $data["time"]=date("Y-m-d H:i:s");
                        // $data["ip"]=get_client_ip();
                        // M("data")->add($data);
                        $this->ajaxreturn("添加成功");
                    }else{
                        $this->ajaxreturn("false");
                    }exit;
                }else{
                    $this->error("两次密码不一致",U("admin_add"));
                }exit;
            }
        }
        $this->assign("info",$group);
        $this->display("admin_add");
    }
    /**
     * 用户编辑
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_edit(){
        $admin=M("users");
        $gro=M("auth_group_access");
        $group=M("auth_group")->select();
        $id=$_GET["id"];
        $user=$admin->where("id=".$id)->find();
        if($_POST){
            if($_POST["password"]!=NULL){
                if($_POST["password"]==$_POST["password2"]){
                    $_POST["password"]=md5($_POST["password"]);
                    $ad=$admin->where("id=".$id)->save($_POST);
                    if($ad){
                        // $data["uid"]=$_SESSION["id"];
                        // $data["content"]="修改了用户资料";
                        // $data["time"]=date("Y-m-d H:i:s");
                        // $data["ip"]=get_client_ip();
                        // M("data")->add($data);
                        $this->success("修改成功",U("admin"));
                    }else{
                        $this->error("修改失败",U("admin"));
                    }exit;
                }
            }else{
                $ad=$admin->where("id=".$id)->save($_POST);
                    if($ad){
                        // $data["uid"]=$_SESSION["id"];
                        // $data["content"]="修改了用户资料";
                        // $data["time"]=date("Y-m-d H:i:s");
                        // $data["ip"]=get_client_ip();
                        // M("data")->add($data);
                        $this->success("修改成功",U("admin"));
                    }else{
                        $this->error("修改失败",U("admin"));
                    }exit;
            }
        }
        $this->assign("user",$user);
        $this->display("admin_edit");
    }
    /**
     * 用户禁用
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_del(){
        $id=$_GET["id"];
        $admin=M("users");
        $info=$admin->where("id=".$id)->save(array("status"=>0));
        if($info){
            // $data["uid"]=$_SESSION["id"];
            // $data["content"]="停用了用户";
            // $data["time"]=date("Y-m-d H:i:s");
            // $data["ip"]=get_client_ip();
            // M("data")->add($data);
            $this->success("已停用",U("admin"));
        }else{
            $this->error("停用失败",U("admin_add"));
        }exit;
        $this->display("admin");
    }
    /**
     * 用户启用
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_sta(){
        $id=$_GET["id"];
        $admin=M("users");
        $info=$admin->where("id=".$id)->save(array("status"=>1));
        if($info){
            // $data["uid"]=$_SESSION["id"];
            // $data["content"]="启用了用户";
            // $data["time"]=date("Y-m-d H:i:s");
            // $data["ip"]=get_client_ip();
            // M("data")->add($data);
            $this->success("已启用",U("admin"));
        }else{
            $this->error("启用失败",U("admin_add"));
        }exit;
        $this->display("admin");
    }
    /**
     * 用户删除
     * @author 杨智超
     * tel:13669982001
     */
    public function admin_delect(){
        $id=$_GET["id"];
        $admin=M("users");
        $info=$admin->where("id=".$id)->delete();
        if($info){
            // $data["uid"]=$_SESSION["id"];
            // $data["content"]="删除了用户";
            // $data["time"]=date("Y-m-d H:i:s");
            // $data["ip"]=get_client_ip();
            // M("data")->add($data);
            $this->success("已删除",U("admin"));
        }else{
            $this->error("删除失败",U("admin_add"));
        }exit;
        $this->display("admin");
    }
}